/*************************************************
filename	: win32_system_interface.h
author		: Stefan lulham
desc		: Contains the win32 system interface
*************************************************/
#ifndef D_WIN32_SYSTEM_INTERFACE_H
#define D_WIN32_SYSTEM_INTERFACE_H

#include <Windows.h>
#include <vector>
#include <algorithm>

#include <modules\system\system_interface.h>
#include <modules\system\win32\win32_system_gadget.h>
#include <modules\system\win32\win32_system_timer.h>
#include <modules\system\system_enums.h>
#include <modules\system\system_videoMode.h>

using namespace std;

#undef CreateWindow

namespace DelGE
{
	namespace Modules
	{
		namespace System
		{
			LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);

			class Win32SystemInterface : public SystemInterface
			{
			protected:
				void CreateWindowClass();

			public:
				Win32SystemInterface();
				~Win32SystemInterface();

				void Update();

				vector<SystemVideoMode> GetSupportedVideoModes();
				SystemVideoMode GetCurrentVideoMode();
				void ChangeVideoMode(const SystemVideoMode &systemVideoMode);
				void RestoreVideoMode();

				void HideMouse();
				void ShowMouse();
			};
		}
	}
}

#endif